Computer systems and communication systems read and receive data from disks and communication channels in an effort to convey meaningful data stored or transmitted from elsewhere. As data is received (either via reading from a computer-readable medium or by receiving data from a communications channel), a data-drive system may often process the data through a read channel to accomplish a number of data processing tasks so that the data is read interpreted quickly and accurately. Thus, a typical read channel may include a number of processing blocks for accomplishing the various data processing tasks that ensure quick and accurate data interpretation.
The processing blocks of a typical read channel, in conventional systems, may be controlled by one or more state machines that contain static operating parameters for processing the data through the read channel. Thus, each processing block may include a corresponding state machine. Each of the state machines includes counters or registers that store values identifying a state. Each state machine also includes logic circuitry that changes the current state of the state machine based on inputs or other factors as data is processed. The logic circuitry also defines the outputs produced by the state machine in each state. The outputs of each state machine may control a processing block or another state machine. State machines may be designed to provide the desired level of control over each of the processing blocks. However, state machines are typically permanently programmed at manufacture time according to desired common operating parameters for the read channel. Changing the programming of these state machines is difficult and not cost-effective once the read channel is deployed in a device in use. Furthermore, once programmed and operating, one cannot switch between different programmed parameters for the state machines while in operation.